package com.fanrenqiji.common.utils.file;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;

/**
 * 上传文件 创建人：FH 创建时间：2014年12月23日
 * 
 * @version
 */
public class FileUpload {
	private static final Logger logger = Logger.getLogger(FileUpload.class);

	/**
	 * @param file
	 *            //文件对象
	 * @param filePath
	 *            //上传路径，文件存放路径，可以绝对路径或者相对路径
	 * @param fileName
	 *            //文件名:真实文件名字，存在数据库和磁盘上的文件名，根据业务规范命名,生成的文件名
	 * @return 文件名
	 */
	public static String fileUp(MultipartFile file, String filePath,
			String fileName) {
		String extName = ""; // 扩展名格式：
		String realName="";//
		try {
			if (file.getOriginalFilename().lastIndexOf(".") >= 0) {
				extName = file.getOriginalFilename().substring(
						file.getOriginalFilename().lastIndexOf("."));
			}
			realName=copyFile(file.getInputStream(), filePath, fileName + extName).replaceAll("-", "");
		} catch (IOException e) {
			logger.error("FileUpload"+e);
		}
		return realName;
	}

	
	/**
	 * @param file
	 *            //文件对象
	 * @param filePath
	 *            //上传路径，文件存放路径，可以绝对路径或者相对路径
	 * @param fileName
	 *            //文件名:真实文件名字
	 * @return 文件名
	 */
	public static String fileOriginalUp(MultipartFile file, String filePath) {
		String realName="";//
		try {
			//这里将中文名称替换为拼音
			String pyName=GetPinyin.getPinYinHeadChar(file.getOriginalFilename());
			realName=copyFile(file.getInputStream(), filePath,pyName).replaceAll("-", "");
		} catch (IOException e) {
			logger.error("FileUpload"+e);
		}
		return realName;
	}
	/**
	 * 写文件到当前目录的upload目录中
	 * 
	 * @param in
	 * @param fileName
	 * @throws IOException
	 */
	private static String copyFile(InputStream in, String dir, String realName)
			throws IOException {
		File file = new File(dir, realName);
		if (!file.exists()) {
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs();
			}
			file.createNewFile();
		}
		FileUtils.copyInputStreamToFile(in, file);
		return realName.trim();
	}

	/**
	 * 删除单个文件
	 * 
	 * @param sPath
	 *            被删除文件的文件名
	 * @return 单个文件删除成功返回true，否则返回false
	 */
	public static boolean deleteUploadFile(String sPath) {
		boolean flag = false;
		File file = new File(sPath);
		// 路径为文件且不为空则进行删除
		if (file.isFile() && file.exists()) {
			file.delete();
			flag = true;
		}
		return flag;
	}

	public static void main(String[] args) {
		deleteUploadFile("F:\\newFile\\new\\22\\75.jpg");

	}
}
